import { createRouter, createWebHistory } from 'vue-router'
// 路由规则表
import routes from './routes'

const router = createRouter({
  history: createWebHistory(),
  routes
  // 滚动行为
  // to 目录路由对象   this.$route
  // from 来源路由对象 this.$route
  // scrollBehavior: (to, from, savedPosition) => {
  //   // top  left
  //   if (to.path == '/') {
  //     // return { top: 300, behavior: 'smooth' }
  //     // 它只在初始化时有跳转,切换没有跳转
  //     return { el: '#aaa' }
  //   } else {
  //     return { top: 0 }
  //   }
  // }
})

// ----- 全局守卫
// 全局前置守卫
// 回调函数如果返回为true或不返回，则不会进行任何的中断操作
// 返回false或 pathname或{path:路径}
// false中断后续渲染
// pathname或{path} 重定向
// to 目录路由对象   this.$route
// from 来源路由对象 this.$route
// vue2中有3个参数
// 项目中使用全局前置守卫场景更多，一般用来完进行权限相关的一系列的处理,用户是否
// router.beforeEach((to, from) => {
//   console.log('全局前置守卫 -- beforeEach')
// })

// // 全局解析守卫
// // vue2中有3个参数
// router.beforeResolve((to,from)=>{
//   console.log('全局解析守卫 -- beforeResolve')
// })

// // 全局后置守卫，它不能阻止页面渲染
// router.afterEach((to,from)=>{
//   console.log('全局后置守卫 -- afterEach')
// })

// ---------- 利用全局前置守卫来验证所访问的页面是否已经登录，如果没有登录则跳转到登录页
// 现在只针对 /news/下面的页面才进行判断
router.beforeEach((to, from) => {
  if (to.path.startsWith('/news/')) {
    if (!window.localStorage.getItem('user')) {
      // return {path:'/login',replace:true}
    }
  }
})

// 动态路由,通过 addRoute方法来完成对路由添加
// 提前进行判断,如要有权限则添加
// 返回值是一个函数,用于清理自己
const removeRoute = router.addRoute({
  path: '/todo',
  component: () => import('@/views/todo/index.vue')
})
// removeRoute()

// 删除指定的路由 'about'它是命名路由的名称
router.removeRoute('about')

export default router
